ofsp2026 12_arg

Created time
Mar 28, 2026 08:23 AM
type
Post
status
Published
date
Mar 28, 2026
slug
ofsp2026 12_arg
summary
tags
ofsp2026
OpenFOAM
category
post
icon
password
Place
Last edited time
Mar 28, 2026 09:13 AM
📌
Important
访问 https://aerosand.cc 以获取最近更新。

0. 前言

OpenFOAM 的很多应用都可以通过命令行来给定运行参数。虽然用户有时候会觉得有些陌生,但是用好命令行可以高效灵活的处理各种问题。
我们同样会从 C++ 开始,简单介绍C++中的命令行参数,之后进一步讨论 OpenFOAM 的命令行参数。
本文主要讨论
了解 OpenFOAM 命令行
理解 C++ 中的命令行参数
理解命令行参数的功能和选项
编译运行 arg 项目

1. OpenFOAM 命令行

OpenFOAM 命令行基础的使用格式如下
比如,实践中有典型的命令行使用如下
使用 -help 选项可以查看更多的命令行选项,例如终端输入 blockMesh -help ,终端会输出如下内容
一般,数据处理和后处理的时候也会大量使用命令行。
例如,使用
具体的使用技巧暂不展开,以后会专门讨论。
我们先简单回顾一下C++中命令行参数的使用。

2. 项目准备

终端输入命令,建立项目
通过 vscode ,使用 F1 输入 Create C++ project ,输入 ofsp_12_arg 作为项目名称,选择 /ofsp 作为父目录,初始化项目。
终端输入命令,测试初始项目
终端输出 Hello world! 表示初始项目运行成功。

3. 命令行参数

我们在初学 C++ 的时候,主函数的参数一般留空,即有如下形式
当进一步深入 C++ 开发时,了解到主函数的更一般写法为
其中
  • argcargument count 的缩写,保存程序运行时传递给主函数的参数个数
  • argvargument vector 的缩写,保存程序运行时传递给主函数的具体参数的字符型指针,每个指针都指向一个具体的参数。
    • argv[0] 指向程序运行时的全路径名称
    • argv[1] 指向程序运行时命令行中执行程序名后第一个字符串
    • argv[2] 指向程序运行时命令行中执行程序名后第二个字符串
    • 其他以此类推

4. 参数顺序

主源码 src/main.cpp 如下所示
终端输入命令,编译运行
终端输出运行结果如下
如果运行时增加参数,例如
终端输出运行结果如下
通过运行结果可以看到,argc 当然就是参数的总个数,argv[0]则是也就是应用名称本身,其他参数按顺序类推。
比如,对于以下命令行
其中,argc 等于 3,而 argv[0]blockMeshargv[1]-caseargv[2]debug_case
总结来说,命令行中的每一个参数其实都可以在程序中通过主函数参数被调用,以便参加程序运行和计算。

5. 参数功能

基于该项目,我们修改主源码,为命令行参数添加一些功能。
主源码 src/main.cpp 如下所示
终端输入命令,编译程序
终端输入命令,查看缺省输出
终端输出如下
终端输入命令,对文件进行写入
终端输出提示消息如下
终端输入测试信息,输入结束Enter空白行结束输入
终端输入命令,对文件进行写出
终端输出如下
可以看到通过输入不同的命令行参数,可以实现程序的不同功能。

6. 参数选项

我们继续开发该项目,实现命令行参数选项。
主源码 src/main.cpp 如下所示
终端输入命令,编译程序
终端输入命令,查看帮助信息
终端输出如下
终端输入命令,查看版本信息
终端输出如下
终端输入命令,对文件进行覆盖写入
终端输入命令,对文件进行写出
终端输出如下
终端输入命令,对文件进行追加写入
终端输入命令,对文件进行写出
终端输出如下
可以看到,此项目可以执行多种命令行参数,也可以执行命令行选项,例如在输出中显式行号,选择文件内容写入的方式。
📌
Tip
以上的代码均未考虑架构和优化等,只是为了让读者简单理解命令行参数的基本内容。

7. 小结

本项目讨论了 C++ 命令行参数的基本用法和实现,相信读者已经对命令行参数有了更多的了解。基于这些讨论,下一篇将过渡到 OpenFOAM 命令行参数的讨论。
本文完成讨论
了解 OpenFOAM 命令行
理解 C++ 中的命令行参数
理解命令行参数的功能和选项
编译运行 arg 项目
 

支持我们

📌
Tip
希望这里的分享可以对坚持、热爱又勇敢的您有所帮助。
如果这里的分享对您有帮助,您的评论或赞助将对本系列以及后续其他系列的更新、勘误、迭代和完善都有很大的意义,这些行动也会为后来的新同学的学习有很大的助益。
赞助打赏时的信息和留言将用于展示和感谢。
Alipay
Alipay
 
Copyright @ 2026 Aerosand
  • OpenFOAM 开发代码 :GPL v3
 
 
Loading...